const {readJson,writeJson} = require('../../until/fs');
const {USER_JSON,USER_UID} = require('../../config/config.data');
const getCookies = require('../../until/getCookies');
const uuid = require('node-uuid')


// 登录接口
let loginIn = (req,res)=>{
    // 获取账号密码
    const {user,pwd} = req.body;


    // 读取我们的用户信息表
    let userData = readJson(USER_JSON);

    // 判断账号是否存在
    let searchRes = userData.find(item=>item.user === user)

    if(!searchRes){
        res.send({code:0,msg:'账号不存在',data:[]})
        return
    }
    
    if(searchRes.pwd !== pwd){
        res.send({code:0,msg:'密码错误',data:[]})
        return
    }

    if(searchRes.status !== 'ok'){
        res.send({code:0,msg:'您账号已被冻结',data:[]})
        return
    }

    //基于时间戳 生成随机字符串 v4随机字符串
    let uid = uuid.v1()

    // 在服务端缓存一个用户状态
    USER_UID.push({uid:uid,user})

    // 往前端的cookie写入一个唯一标识记录用户状态
    res.cookie('uid',uid)

    res.send({code:1,msg:'登陆成功',data:searchRes.user})

}

// 用户退出
let loginOut = (req,res) =>{

    // 获取客户端uid
    let searchUser = getCookies(req.get('cookie'),'uid');

    // 通过uid从缓存中筛查缓存用户状态
    let index = USER_UID.findIndex(item=>item.uid === searchUser);

    // 对缓存用户状态进行清除
    if(index>-1){
        USER_UID.splice(index,1)
    }

    // 清除客户端的cookie中的uid
    res.clearCookie('uid')
    
    res.send({code:1,msg:'退出成功',data:[]})
}

// 注册接口
let registerIn = (req,res) =>{
    // 获取账号密码
    const {user,pwd} = req.body;

    if(!/^[a-z0-9]{6,18}$/.test(user)){
        res.send({code:0,msg:'用户名不合法',data:[]})
        return
    }

    // 读取我们的用户信息表
    let userData = readJson(USER_JSON);

    // 判断账号是否存在
    let searchRes = userData.find(item=>item.user === user)

    if(searchRes){
        res.send({code:0,msg:'账号存在',data:[]})
        return
    }

    let userObj = {
        user,
        pwd,
        sex:null,
        name:'',
        img:'/public/photo.jpg',
        cardType:null,
        card:'',
        birthDay:'',
        status:"ok",
        loginTime:new Date().getTime()
    }
    // 添加账号
    userData.push(userObj)
    console.log(userData)
    // 写入文件
    writeJson(USER_JSON,userData)

    res.send({code:1,msg:'注册成功',data:userObj.user})
}




module.exports = {
    loginIn,registerIn,loginOut
}